package com.neuedu.mvc.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 项目    ： spring-mvc-java1
* 创建时间 ：2020/3/31  13:47 31
* author  ：jshand-root
* site    :  http://314649444.iteye.com
* 描述     : 设置中文编码的拦截器
*/
public class CharsetInterceptor implements HandlerInterceptor {

   /**
    * 在控制器方法之前执行的
    * @param request
    * @param response
    * @param handler
    * @return   false：控制的方法不会就行执行，同时postHandle、afterCompletion 方法也都不会继续执行
    * @throws Exception
    */
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

       request.setCharacterEncoding("utf-8");
       response.setCharacterEncoding("utf-8");

       System.out.println("2.1 编码的拦截器:preHandle");
       return true;
   }

   /**
    * 在控制器方法之后执行 ,如果有异常不会执行
    * @param request
    * @param response
    * @param handler
    * @param modelAndView
    * @throws Exception
    */
   @Override
   public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
       System.out.println("2.2 编码的拦截器:postHandle");

   }

   /**
    * 在控制器方法之后执行 有异常也正常的执行
    * @param request
    * @param response
    * @param handler
    * @param ex
    * @throws Exception
    */
   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
       System.out.println("2,3 编码的拦截器:afterCompletion");
   }
}